#ifndef _CLIENT_LOOP_
#define _CLIENT_LOOP_

#include "client.h"
#include "commands.h"
#include "ui.h"
#include "network.h"
#include "protocol.h"
#include "epoll.h"
#include "fileTransfer.h"
#include <pthread.h>

// 长命令线程入口函数
typedef void* (*ThreadFunc)(void *);

/* 长命令线程传入参数 */
typedef struct {
    const char *ip;
    int port;
}NetAddr_t;

typedef struct {
    NetAddr_t net_addr;
    ClientContext *ctx;
    ParsedCommand command;
}Tunnel_t;

// 主循环控制
int run_client_loop(ClientContext *ctx,const char *ip, int port);

// 长命令处理
int fileTransThread(ThreadFunc thread_func,ClientContext *ctx, NetAddr_t net_addr, ParsedCommand command);
void* downloadThreadFunc(void* arg);
void* uploadThreadFunc(void* arg);

#endif